home *** CD-ROM | disk | FTP | other *** search
- //-------------------------------------
- //
- // SuperCode (c) 1996 by T.Kühn
- //
- // Programmiersprache: ANSI-C
- // Projektstart: 27.12.94
- //
- // Modul: Preferences
- //
- //-------------------------------------
-
-
-
-
-
- //-------------------------------------
-
- #include <pragma/asl_lib.h>
- #include <pragma/graphics_lib.h>
- #include <pragma/intuition_lib.h>
- #include <pragma/dos_lib.h>
- #include <pragma/exec_lib.h>
- #include <pragma/gadtools_lib.h>
- #include <libraries/gadtools.h>
- #include <libraries/asl.h>
- #include <intuition/gadgetclass.h>
- //#include <graphics/displayinfo.h>
-
- #include <Struct.h>
-
- //-------------------------------------
-
- struct tkPrefs prg_preferences,*prg_prefs=&prg_preferences;
- struct tkPrefs cpy_preferences,*cpy_prefs=&cpy_preferences;
-
- struct Window *window_prefs=0;
-
- enum id
- {
- ID_NONE,
- ID_COLORS,
- ID_COLUMNS,
- ID_EQUAL,
- ID_ORDER,
- ID_DISPLAY,
- ID_NOVICE,
- ID_AMATURE,
- ID_EXPERT,
- ID_END
- };
- //-------------------------------------
- void prefs_init()
- {
- struct Screen *scr=LockPubScreen(PUB_WB);
-
- prg_prefs->game.num_columns=4;
- prg_prefs->game.num_colors= 6;
- prg_prefs->game.max_equal= 1; // > 0
- prg_prefs->game.val_order= ORDER_DESC;
- prg_prefs->game.display= DISPLAY_COLORS;
-
- if (scr)
- {
- prg_prefs->scr.scr_mode=GetVPModeID(&scr->ViewPort);
- prg_prefs->scr.scr_width=scr->Width;
- prg_prefs->scr.scr_height=scr->Height;
- UnlockPubScreen(0,scr);
- }
- else
- {
- prg_prefs->scr.scr_mode=LIKE_WORKBENCH;
- prg_prefs->scr.scr_width=640;
- prg_prefs->scr.scr_height=512;
- }
- prg_prefs->scr.scr_depth=3;
- prg_prefs->scr.scr_overscan=OSCAN_TEXT;
- prg_prefs->scr.scr_public=TRUE;
-
- strcpy(prg_prefs->game.player_name,"Nobody");
- strcpy(prg_prefs->game.save_file,"Save/SuperSave.001");
- strcpy(prg_prefs->scr.scr_pubname,PUB_WB);
-
- // strcpy(prg_prefs->scr.fontname,"CGTimes.font");
- // prg_prefs->scr.fontattr.ta_YSize=30;
-
- strcpy(prg_prefs->scr.fontname,scr->Font->ta_Name);
- prg_prefs->scr.fontattr.ta_YSize=scr->Font->ta_YSize;
-
- prg_prefs->scr.fontattr.ta_Name=prg_prefs->scr.fontname;
-
- prg_prefs->win.game.Xpos=20;
- prg_prefs->win.game.Ypos=20;
- prg_prefs->win.game.WinW=250;
- prg_prefs->win.game.WinH=300;
-
- prg_prefs->win.score.Xpos=270;
- prg_prefs->win.score.Ypos=20;
- prg_prefs->win.score.WinW=250;
- prg_prefs->win.score.WinH=300;
-
- prg_prefs->win.prefs.Xpos=10;
- prg_prefs->win.prefs.Ypos=40;
- prg_prefs->win.prefs.WinW=270;
- prg_prefs->win.prefs.WinH=200;
-
- prg_prefs->win.font.Xpos=20;
- prg_prefs->win.font.Ypos=20;
- prg_prefs->win.font.WinW=250;
- prg_prefs->win.font.WinH=200;
-
- prg_prefs->win.file.Xpos=20;
- prg_prefs->win.file.Ypos=20;
- prg_prefs->win.file.WinW=250;
- prg_prefs->win.file.WinH=200;
-
- prg_prefs->win.scrn.Xpos=20;
- prg_prefs->win.scrn.Ypos=20;
- prg_prefs->win.scrn.WinW=200;
- prg_prefs->win.scrn.WinH=200;
-
- prefs_load();
- };
- //-------------------------------------
- void prefs_free()
- {
- prefs_windowclose();
- // prefs_save();
- };
- //-------------------------------------
-
-
-
- //-------------------------------------
- LONG prefs_askscreen()
- {
- struct ScreenModeRequester *request;
- LONG back=FALSE;
-
- request=AllocAslRequest(ASL_ScreenModeRequest,0);
- if (request)
- {
- LONG mode= prg_prefs->scr.scr_mode;
-
- back=AslRequestTags(request,
- ASLSM_InitialLeftEdge,prg_prefs->win.scrn.Xpos,
- ASLSM_InitialTopEdge,prg_prefs->win.scrn.Ypos,
- ASLSM_InitialHeight,prg_prefs->win.scrn.WinW,
- ASLSM_InitialWidth,prg_prefs->win.scrn.WinH,
-
- ASLSM_Window,0,
- ASLSM_SleepWindow,0,
-
- ASLSM_Locale,0,
- // ASLSM_NegativeText,(STRPTR),
- // ASLSM_PositiveText,(STRPTR),
- // ASLSM_TextAttr,(struct TextAttr *),
- ASLSM_TitleText,CatStr(TXT_PREFSCREENMODE),
-
- ASLSM_InitialDisplayID,mode,
- // ASLSM_InitialAutoScroll,TRUE,
- ASLSM_InitialDisplayDepth,Scrn.Depth,
- ASLSM_InitialDisplayWidth,Scrn.Width,
- ASLSM_InitialDisplayHeight,Scrn.Height,
- ASLSM_InitialOverscanType,Scrn.OverScan,
-
- // ASLSM_InitialInfoLeftEdge (WORD)
- // ASLSM_InitialInfoTopEdge (WORD) [V38]
- // ASLSM_InitialInfoOpened,TRUE,
- // ASLSM_UserData (APTR) [V38]
-
- // ASLSM_DoAutoScroll,TRUE,
- ASLSM_DoDepth,TRUE,
- ASLSM_DoHeight,TRUE,
- ASLSM_DoWidth,TRUE,
- ASLSM_DoOverscanType,TRUE,
- // ASLSM_FilterFunc (struct Hook *) [V38]
- // ASLSM_MaxDepth (UWORD),
- // ASLSM_MinDepth (UWORD) [V38]
- // ASLSM_MaxHeight (ULONG),
- // ASLSM_MinHeight (ULONG) [V38]
- // ASLSM_MaxWidth (ULONG),
- // ASLSM_MinWidth (ULONG) [V38]
- // ASLSM_PropertyFlags (ULONG),
- // ASLSM_PropertyMask (ULONG) [V38]
-
- TAG_END);
-
- prg_prefs->win.scrn.Xpos=request->sm_LeftEdge;
- prg_prefs->win.scrn.Ypos=request->sm_TopEdge;
- prg_prefs->win.scrn.WinW=request->sm_Width;
- prg_prefs->win.scrn.WinH=request->sm_Height;
-
- if (back)
- {
- prg_prefs->scr.scr_width=request->sm_DisplayWidth;
- prg_prefs->scr.scr_height=request->sm_DisplayHeight;
- prg_prefs->scr.scr_depth=request->sm_DisplayDepth;
- prg_prefs->scr.scr_mode=request->sm_DisplayID;
- prg_prefs->scr.scr_overscan=request->sm_OverscanType;
- prg_prefs->scr.scr_public=FALSE;
- }
- FreeAslRequest(request);
- }
- return back;
- }
- //-------------------------------------
- void prefs_setscreen()
- {
- if (prefs_askscreen())
- {
- // prefs_settext();
- Screen_Open(&Scrn);
- }
- }
- //-------------------------------------
-
-
- //-------------------------------------
- LONG prefs_askfont(struct TextAttr *attr)
- {
- struct FontRequester *request;
- LONG back=FALSE;
-
- request=AllocAslRequest(ASL_FontRequest,0);
- if (request)
- {
- back=AslRequestTags(request,
- // ASLFO_Window,Win_Calc->WinPtr,
- ASLFO_TitleText,CatStr(TXT_PREFSELECTFONT),
- ASLFO_InitialDrawMode,JAM1,
- ASLFO_InitialFlags,0,
- ASLFO_InitialName,attr->ta_Name,
- ASLFO_InitialSize,attr->ta_YSize,
- ASLFO_InitialStyle,FS_NORMAL,
- ASLFO_InitialLeftEdge,prg_prefs->win.font.Xpos,
- ASLFO_InitialTopEdge,prg_prefs->win.font.Ypos,
- ASLFO_InitialWidth,prg_prefs->win.font.WinW,
- ASLFO_InitialHeight,prg_prefs->win.font.WinH,
- TAG_END);
-
- prg_prefs->win.font.Xpos=request->fo_LeftEdge;
- prg_prefs->win.font.Ypos=request->fo_TopEdge;
- prg_prefs->win.font.WinW=request->fo_Width;
- prg_prefs->win.font.WinH=request->fo_Height;
-
- if (back)
- {
- StrCopy(attr->ta_Name,request->fo_Attr.ta_Name,MAX_FONTNAME);
- attr->ta_YSize=request->fo_Attr.ta_YSize;
- }
- FreeAslRequest(request);
- }
- return back;
- }
- //-------------------------------------
- void prefs_setfont()
- {
- if (prefs_askfont(&prg_prefs->scr.fontattr))
- {
- // prefs_settext();
- Screen_Open(&Scrn);
- }
- }
- //-------------------------------------
-
-
- //-------------------------------------
- LONG prefs_askfile(UBYTE *title,UBYTE *filename,LONG size,LONG save)
- {
- struct FileRequester *request;
- LONG back=FALSE;
- UBYTE drawer[FILENAME_MAX+2];
-
- strncpy(drawer,filename,MIN(size,FILENAME_MAX));
- if (PathPart(drawer)) PathPart(drawer)[0]=0;
-
- request=AllocAslRequest(ASL_FileRequest,0);
-
- if (request)
- {
- back=AslRequestTags(request,
- ASLFR_InitialLeftEdge,prg_prefs->win.file.Xpos,
- ASLFR_InitialTopEdge,prg_prefs->win.file.Ypos,
- ASLFR_InitialWidth,prg_prefs->win.file.WinW,
- ASLFR_InitialHeight,prg_prefs->win.file.WinH,
-
- ASLFR_Screen,Scrn.Scrn,
- ASLFR_Locale,locale,
- ASLFR_TitleText,title,
-
- ASLFR_InitialFile,FilePart(filename),
- ASLFR_InitialDrawer,drawer,
-
- ASLFR_DoSaveMode,save,
- TAG_END);
-
- prg_prefs->win.file.Xpos=request->fr_LeftEdge;
- prg_prefs->win.file.Ypos=request->fr_TopEdge;
- prg_prefs->win.file.WinW=request->fr_Width;
- prg_prefs->win.file.WinH=request->fr_Height;
-
- if (back)
- {
- StrCopy(filename,request->fr_Drawer,size);
- AddPart(filename,request->fr_File,size);
- }
- FreeAslRequest(request);
- }
- return back;
- }
- //-------------------------------------
-
-
- struct Gadget *gadget_first=0,
- *gadget_colors,
- *gadget_equal,
- *gadget_order,
- *gadget_display,
- *gadget_columns,
- *gadget_novice,
- *gadget_amature,
- *gadget_expert;
-
- UBYTE *text_order[4];
- UBYTE *text_display[3];
-
- //-------------------------------------
- void gadget_newlook(struct Gadget *gad)
- {
- while (gad)
- {
- if ( (gad->GadgetType & GTYP_PROPGADGET) && (gad->SpecialInfo) )
- ((struct PropInfo*)gad->SpecialInfo)->Flags|=PROPNEWLOOK;
- gad=gad->NextGadget;
- }
- }
- //-------------------------------------
-
- //-------------------------------------
- void prefs_copy(struct tkPrefs *src,struct tkPrefs *dst)
- {
- if (dst && src)
- {
- memcpy(&dst->scr,&src->scr,sizeof(struct SetScreen));
- memcpy(&dst->game,&src->game,sizeof(struct SetGame));
- // memcpy(&dst->win,&src->win,sizeof(struct SetWindow));
- }
- }
- //-------------------------------------
-
- //-------------------------------------
- void prefs_freegadgets()
- {
- if (gadget_first)
- {
- if (window_prefs) RemoveGList(window_prefs,gadget_first,-1);
- FreeGadgets(gadget_first);
-
- if (gadget_novice) DisposeObject(gadget_novice);
- if (gadget_amature) DisposeObject(gadget_amature);
- if (gadget_expert) DisposeObject(gadget_expert);
-
- gadget_first=0;
- }
- }
- //-------------------------------------
- void prefs_newsize(BOOL clr)
- {
- struct TextFont *font=Scrn.tkfont.font;
- struct RastPort *rp;
- struct NewGadget new=
- {
- 0, //ng_LeftEdge;
- 0, //ng_TopEdge;
- 0, //ng_Width;
- 0, //ng_Height;
- 0, // ng_GadgetText;
- 0, // ng_TextAttr;
- 0, // ng_GadgetID;
- 0, // ng_Flags;
- Scrn.Visual, // ng_VisualInfo;
- 0 // ng_UserData;
- };
- text_order[0]=CatStr(TXT_PREFPOSITION);
- text_order[1]=CatStr(TXT_PREFDESC);
- text_order[2]=CatStr(TXT_PREFRANDOM);
- text_order[3]=0;
-
- text_display[0]=CatStr(TXT_PREFCOLORS);
- text_display[1]=CatStr(TXT_PREFLETTERS);
- text_display[2]=0;
-
- if (window_prefs)
- {
- rp=window_prefs->RPort;
-
- prefs_freegadgets();
-
- CreateContext(&gadget_first);
- {
- ULONG x=window_prefs->BorderLeft;
- ULONG y=window_prefs->BorderTop;
- ULONG w=window_prefs->Width-window_prefs->BorderLeft-window_prefs->BorderRight;
- ULONG h=window_prefs->Height-window_prefs->BorderTop-window_prefs->BorderBottom;
- ULONG s,xc,yc,wc,hc;
-
- if (clr)
- {
- EraseRect(rp,x,y,x+w-1,y+h-1);
- RefreshWindowFrame(window_prefs);
- }
-
- x+=6;
- y+=6;
- w-=12;
- h-=12;
-
- s=font->tf_YSize+6;
- xc=x;
- yc=y+s;
- wc=(w-6)/2;
- hc=14;
-
- new.ng_TextAttr= &Scrn.tkfont.attr;
- new.ng_LeftEdge= xc;
- new.ng_TopEdge= yc;
- new.ng_Width= wc;
- new.ng_Height= hc;
- new.ng_GadgetID= ID_COLUMNS;
-
- gadget_columns = CreateGadget(SLIDER_KIND,gadget_first,&new,
- GA_Immediate,TRUE,
- GA_RelVerify,TRUE,
- GTSL_Level,cpy_prefs->game.num_columns,
- GTSL_Max,20,
- GTSL_Min,2,
- PGA_Freedom,LORIENT_HORIZ,
- GTSL_LevelFormat,CatStr(TXT_PREFCOLUMNS),
- GTSL_LevelPlace,PLACETEXT_ABOVE,
- GTSL_MaxLevelLen,12,
- // GTSL_MaxPixelLen,wc,
- TAG_END);
-
- new.ng_LeftEdge= xc+wc+6;
- new.ng_TopEdge= yc;
- new.ng_Width= wc;
- new.ng_Height= hc;
- new.ng_GadgetID= ID_COLORS;
-
- gadget_colors = CreateGadget(SLIDER_KIND,gadget_columns,&new,
- GA_Immediate,TRUE,
- GA_RelVerify,TRUE,
- GTSL_Level,cpy_prefs->game.num_colors,
- GTSL_Max,26,
- GTSL_Min,2,
- PGA_Freedom,LORIENT_HORIZ,
- GTSL_LevelFormat,CatStr(TXT_PREFSETCOLOR),
- GTSL_LevelPlace,PLACETEXT_ABOVE,
- GTSL_MaxLevelLen,12,
- // GTSL_MaxPixelLen,wc,
- TAG_END);
-
- yc+=hc+s+6;
- new.ng_LeftEdge= xc+wc/2+3;
- new.ng_TopEdge= yc;
- new.ng_Width= wc;
- new.ng_Height= hc;
- new.ng_GadgetID= ID_EQUAL;
-
- gadget_equal = CreateGadget(SLIDER_KIND,gadget_colors,&new,
- GA_Immediate,TRUE,
- GA_RelVerify,TRUE,
- GTSL_Level,cpy_prefs->game.max_equal,
- GTSL_Max,20,
- GTSL_Min,1,
- PGA_Freedom,LORIENT_HORIZ,
- GTSL_LevelFormat,CatStr(TXT_PREFSETEQUAL),
- GTSL_LevelPlace,PLACETEXT_ABOVE,
- GTSL_MaxLevelLen,12,
- // GTSL_MaxPixelLen,wc,
- TAG_END);
-
- yc+=hc+s+6;
- new.ng_LeftEdge= x;
- new.ng_TopEdge= yc;
- new.ng_Width= w;
- new.ng_Height= s;
- new.ng_GadgetID= ID_ORDER;
- new.ng_GadgetText= CatStr(TXT_PREFANSWER);
- new.ng_Flags= PLACETEXT_ABOVE;
-
- gadget_order = CreateGadget(CYCLE_KIND,gadget_equal,&new,
- GA_Immediate,TRUE,
- GA_RelVerify,TRUE,
- GTCY_Active,cpy_prefs->game.val_order,
- GTCY_Labels,text_order,
- TAG_END);
-
- yc+=s+s+6;
- new.ng_LeftEdge= x;
- new.ng_TopEdge= yc;
- new.ng_Width= w;
- new.ng_Height= s;
- new.ng_GadgetID= ID_DISPLAY;
- new.ng_GadgetText= CatStr(TXT_DISPLAYMODE);
- new.ng_Flags= PLACETEXT_ABOVE;
-
- gadget_display = CreateGadget(CYCLE_KIND,gadget_order,&new,
- GA_Immediate,TRUE,
- GA_RelVerify,TRUE,
- GTCY_Active,prg_prefs->game.display,
- GTCY_Labels,text_display,
- TAG_END);
-
- wc=(w-12)/3;
-
- yc+=s+12;
- gadget_novice = NewObject (class_button,0,
- GA_Previous,gadget_display,
- GA_Left,x,
- GA_Top,yc,
- GA_Width,wc,
- GA_Height,s,
- GA_RelVerify,TRUE,
- GA_Text,CatStr(TXT_PREFBEGINNER),
- GA_ID,ID_NOVICE,
- GA_Font,font,
- TAG_END);
-
- gadget_amature = NewObject (class_button,0,
- GA_Previous,gadget_order,
- GA_Left,x+wc+6,
- GA_Top,yc,
- GA_Width,wc,
- GA_Height,s,
- GA_RelVerify,TRUE,
- GA_Text,CatStr(TXT_PREFAMATURE),
- GA_ID,ID_AMATURE,
- GA_Font,font,
- TAG_END);
-
- gadget_expert = NewObject (class_button,0,
- GA_Previous,gadget_order,
- GA_Left,x+2*wc+12,
- GA_Top,yc,
- GA_Width,wc,
- GA_Height,s,
- GA_RelVerify,TRUE,
- GA_Text,CatStr(TXT_PREFEXPERT),
- GA_ID,ID_EXPERT,
- GA_Font,font,
- TAG_END);
-
- gadget_newlook(gadget_first);
- }
- AddGList(window_prefs,gadget_first,-1,-1,0);
- RefreshGList(gadget_first,window_prefs,0,-1);
- GT_RefreshWindow(window_prefs,0);
- }
- }
- //-------------------------------------
- void prefs_windowopen()
- {
- if (!window_prefs)
- {
- prefs_copy(prg_prefs,cpy_prefs);
-
- window_prefs=OpenWindowTags(0,
- WA_Title,CatStr(TXT_SCOREWINTITLE),
-
- WA_Left,prg_prefs->win.prefs.Xpos,
- WA_Top,prg_prefs->win.prefs.Ypos,
- WA_Width,prg_prefs->win.prefs.WinW,
- WA_Height,prg_prefs->win.prefs.WinH,
- (Scrn.Scrn && Scrn.FlgPublic==FALSE) ? WA_CustomScreen : WA_PubScreen,Scrn.Scrn,
- WA_Flags,
- WFLG_ACTIVATE|
- WFLG_CLOSEGADGET|
- WFLG_DRAGBAR|
- WFLG_DEPTHGADGET|
- WFLG_NEWLOOKMENUS|
- WFLG_RMBTRAP|
- // WFLG_SIZEBBOTTOM|
- WFLG_SIZEBRIGHT|
- WFLG_SIZEGADGET|
- 0,
- WA_IDCMP,
- IDCMP_GADGETUP|
- IDCMP_CLOSEWINDOW|
- IDCMP_NEWSIZE|
- SLIDERIDCMP|
- 0,
- // WA_Zoom,0,
- WA_AutoAdjust,TRUE,
- WA_MaxWidth,-1,
- WA_MaxHeight,-1,
- WA_MinWidth,50,
- WA_MinHeight,50,
- TAG_END);
- }
- prefs_newsize(FALSE);
- }
- //-------------------------------------
- void prefs_windowclose()
- {
- if (window_prefs)
- {
- prefs_freegadgets();
-
- window_close(window_prefs,&prg_prefs->win.prefs);
- window_prefs=0;
-
- prefs_copy(cpy_prefs,prg_prefs);
- }
- }
- //-------------------------------------
- void prefs_setwindow()
- {
- GT_SetGadgetAttrs(gadget_columns,window_prefs,0,
- GTSL_Level,cpy_prefs->game.num_columns,
- TAG_END);
-
- GT_SetGadgetAttrs(gadget_colors,window_prefs,0,
- GTSL_Level,cpy_prefs->game.num_colors,
- TAG_END);
-
- GT_SetGadgetAttrs(gadget_equal,window_prefs,0,
- GTSL_Level,cpy_prefs->game.max_equal,
- TAG_END);
-
- GT_SetGadgetAttrs(gadget_order,window_prefs,0,
- GTCY_Active,cpy_prefs->game.val_order,
- TAG_END);
-
- }
- //-------------------------------------
-
-
- //-------------------------------------
- void prefs_dogadget(ULONG id,ULONG code,ULONG qual)
- {
- ULONG
- colors=cpy_prefs->game.num_colors,
- columns=cpy_prefs->game.num_columns,
- equal=cpy_prefs->game.max_equal,
- order=cpy_prefs->game.val_order,
- display=cpy_prefs->game.display;
-
- switch (id)
- {
- case ID_COLORS:
- colors=code;
- break;
- case ID_COLUMNS:
- columns=code;
- break;
- case ID_EQUAL:
- equal=code;
- break;
- case ID_ORDER:
- order=code;
- break;
- case ID_DISPLAY:
- display=code;
- break;
- case ID_NOVICE:
- colors=6;
- columns=4;
- equal=1;
- order=ORDER_POS;
- break;
- case ID_AMATURE:
- colors=7;
- columns=5;
- equal=2;
- order=ORDER_DESC;
- break;
- case ID_EXPERT:
- colors=12;
- columns=8;
- equal=3;
- order=ORDER_RANDOM;
- break;
- }
-
- cpy_prefs->game.num_colors=colors;
- cpy_prefs->game.num_columns=columns;
- cpy_prefs->game.max_equal=equal;
- cpy_prefs->game.val_order=order;
- cpy_prefs->game.display=display;
-
- prefs_setwindow();
- }
- //-------------------------------------
- LONG prefs_getbit()
- {
- LONG bit=0;
-
- if (window_prefs)
- {
- bit=1 << window_prefs->UserPort->mp_SigBit;
- }
-
- return bit;
- }
- //-------------------------------------
- VOID prefs_domsg()
- {
- struct Window *win=window_prefs;
- struct IntuiMessage *msg;
-
- struct Gadget *gadg;
- LONG clas;
- LONG code;
- LONG qual;
- LONG posx,posy,seco,micr;
-
- while (window_prefs && (msg=GT_GetIMsg(win->UserPort)))
- {
- gadg = (APTR)msg->IAddress;
- clas = msg->Class;
- code = msg->Code;
- qual = msg->Qualifier;
- posx = msg->MouseX;
- posy = msg->MouseY;
- seco = msg->Seconds;
- micr = msg->Micros;
-
- GT_ReplyIMsg(msg);
-
- switch (clas)
- {
- case IDCMP_CHANGEWINDOW:
- // Window_StoreSize(MsgBlk);
- break;
- case IDCMP_RAWKEY:
- break;
- case IDCMP_NEWSIZE:
- prefs_newsize(TRUE);
- break;
- case IDCMP_MENUPICK:
- // Command_Menu(,GadMsg.Code);
- break;
- case IDCMP_CLOSEWINDOW:
- prefs_windowclose();
- break;
- case IDCMP_GADGETUP:
- prefs_dogadget(gadg->GadgetID,code,qual);
- break;
- }
- }
- }
- //-------------------------------------
-
- char prefs_file[]="PROGDIR:SuperCode.prefs";
- //-------------------------------------
- void prefs_save()
- {
- struct tkfile *file;
-
- file = file_open(prefs_file,MODE_NEWFILE,FALSE);
-
- file_writelong(file,PREFSHEAD);
- file_saveblock(file,INDGAME,VERGAME,sizeof(struct SetGame),&prg_prefs->game);
- file_saveblock(file,INDSCREEN,VERSCREEN,sizeof(struct SetScreen),&prg_prefs->scr);
- file_saveblock(file,INDWINDOW,VERWINDOW,sizeof(struct SetWindow),&prg_prefs->win);
-
- file_free(&file);
- }
- //-------------------------------------
- void prefs_load()
- {
- struct tkfile *file;
-
- file = file_open(prefs_file,0,ASKFILE_CANTOPEN);
-
- if (file_readlong(file)==PREFSHEAD)
- {
- BOOL load=TRUE;
- ULONG ind=0;
-
- while (load)
- {
- ind=file_readlong(file);
- switch(ind)
- {
- case INDGAME:
- file_loadblock(file,VERGAME,sizeof(struct SetGame),&prg_prefs->game);
- break;
- case INDSCREEN:
- file_loadblock(file,VERSCREEN,sizeof(struct SetScreen),&prg_prefs->scr);
- break;
- case INDWINDOW:
- file_loadblock(file,VERWINDOW,sizeof(struct SetWindow),&prg_prefs->win);
- break;
- default:
- load=FALSE;
- break;
- }
- }
- }
- file_free(&file);
- }
- //-------------------------------------
-
-
- //-------------------------------------
- /*
- //-------------------------------------
- LONG prefs_askpubscreen(UBYTE *name,LONG max)
- {
- struct PubScreenRequest *pub=0;
- LONG back=FALSE;
-
- pub=AllocPubScreenRequest();
-
- if (pub)
- {
- back=PubScreenRequest(pub);
-
- if (back)
- {
- prg_prefs->scr_public=TRUE;
- StrCopy(name,pub->PubName,max);
- }
- FreePubScreenRequest(pub);
- }
-
- return back;
- }
- //-------------------------------------
- void prefs_setpubscreen()
- {
- if (prefs_askpubscreen(prg_prefs->scr_pubname,MAX_PUBSCREENNAME))
- {
- prefs_settext();
- Screen_Open(&Scrn);
- }
- }
- //-------------------------------------
- */
-